什麼是 AI?所謂學習 AI 到底是在學習什麼東西?此大哉問不是三言兩語可以清楚回答的,老頭建議初學者可以在 google 上搜尋「什麼是人工智慧」,看個兩三篇,從中大致能夠得到此基本的背景知識。
簡單的說,現今一般所講的 AI 大多是指「深度學習 (Deep Learning)」,它是目前 AI 研究的主流,老頭的學習也主要在這個範疇內。為了行文方便,往後一系列的文章中,老頭並不特別區分 AI 和深度學習這兩個詞彙。在有需要強調兩者不同的時候,再特別加以標註說明。
兩年前我們一群同事開始學習 AI,起初一切進行的似乎非常順利,網路上的資源汗牛充棟,需要什麼東西,在彈指間就可輕易的從網路上拉下來,我們學到:
Python 是 AI 主要的程式語言:
沒問題,大家都是 C++ 的老手,Python, a piece of cake!
Keras 提供了方便的 API:
文件非常齊全,大家讀了一兩個禮拜,就可以上手了。
FC / CNN / RNN 是模型常用的結構:
老實說,除了 FC (Fully Connected) 之外,CNN 和 RNN 的內部結構我們真的是看不太懂,勉強知其然,卻不知其所以然。所幸 Keras 把它們包裝得很好,網路上也有一大票 sample codes 教我們怎麼用它們,因此我們當時覺得,不需要懂引擎剎車的原理,只要會開車就行了吧!不要去想 CNN / RNN 內部到底在做什麼,直接拿來用就可以了!
AlexNet / VGG / InceptionNet / ResNet 等等是著名的影像辨識模型:
我們大略的研讀了它們的結構,雖然不能百分之百了解它們的精髓,但是使用它們則是相當方便的。我們從網路下載了一些訓練好的模型做實驗,效果符合預期,我們非常滿意。
至此,大家覺得我們應該準備好了(很是自滿),可以用 AI 來做一些產品。而當時公司有個研發中的產品碰到技術瓶頸,它是一個用數學及統計方法計算待測物位置的「定位系統」,因為環境及雜訊的干擾,精確度一直無法達到標準。於是乎我們這群自大的人決定用 AI 來解決這個問題,天真的以為大概幾個月就會有成果了。
我們的下場大概各位讀者都能夠預期得到,不是普通的慘!
在整個過程裏我們犯了很多的錯誤,例如技術基礎不夠深厚、AI 專案的研發流程不夠熟悉等等(磬竹難書),但其中老頭認為最值得和大家分享的是「我們遠遠低估 AI 專案 Prototype 和 Product 之間的距離」!
依照過去的經驗,一個產品 Prototype 完成所需的時程,大概是整個專案時程的 20% 到 50%,而 AI 的專案可能不到 5%!甚至可能是 0% (夠嚇人的)!其中一部份的原因是對於 AI 產品不夠了解,無法好好掌握 Prototype 所需要驗證的功能範圍 (scope),而最大的原因,應該來自於深度學習本身的特性。
舉個例子,假設我們要設計一個能夠判別照片內的物體是不是「狗」的產品,產品的要求的精確度是 95%,為了驗證研發的可行性,我們也許會先儘快設計一個 prototype,精確度的目標是 85%,如果能夠成功的達成目標,下一個階段再改良這個 prototype,使之成為正式的產品。
看起來這是個很合理的專案規劃。OK, Let’s go! 我們先設計一個模型,(這好像不難,網路上應該有計多類似問題的模型可供參考) ,理論上它未經訓練時的精確度應該是 50% (註一),而後我們開始收集照片(包含及不包含狗的照片都要),並同時訓練我們的模型,兩個月過去了,收集了 2 萬張照片,訓練出一個 13 層的 CNN + FC 模型,精確度 86%,大夥兒高興極了,馬上 demo 給主管看,主管看了心中竊喜,先鼓勵大家一番,並要求大家 6 個月後拿出產品來 (主管的心證,prototype = 完成度 25%) ,隨後在高階經營會議上跟總經理說 8 個月後可以推出新產品 (自己抓了 2 個月 buffer)。
隨後大家興沖沖的開始 “fine-tune” 我們的模型,第一個月 88% (good!),第二個月 89.5% (not bad!),第三個月 90%,有點急了,第四個月 90.5%,第五個月 90.8%,到了第六個月,儘管已經收集超過 10 萬張照片,模型也膨脹到 16 層,但是精確度也只能達到 91%,怎麼也上不去。硬著頭皮跟主管報告,主管面有難色,不知道 91% 和 95% 的精確度差異會有多麼明顯,於是拿了一張他養的名貴捷克狼犬的照片測試一下,結果模型輸出「非狗」!然後..........
為什麼是這樣?因為
所以,如果模型用錯了,目標永遠達不到;如果模型是適當的,也許要到收集到 50 萬張照片,才能達到 95% 精確度;而最後,要確保收集的訓練資料足以涵蓋實際應用時的狀況。
老頭的團隊所犯的失誤,就是第二和第三種狀況。(佛祖保佑,沒被 fired )
前幾週老頭因公務需要,與某大學的一個研究室商談有關 AI 技術的合作事宜,這是一個跟醫療照護有關的研發專案,兩位博士指導老師帶領七八位研究生,興致勃勃地介紹他們的計劃,從如何收集資料,如何建模,到如何驗證,如何臨床實驗,時程排得相當緊湊,信心十足,彷彿所有的技術都已成熟,只待實作和商品化。我在他們身上看到了一年多前的我們,感慨萬分,當下真的不知道該說實話,澆他們一頭冷水,還是 …… 就讓他們痛一次吧,痛了才會成長。
勿將 AI 輕易看,這是老頭想和 AI 人分享的肺腑之言。